package year2022.leetcode.simple;

public class RomanToInt {
    private Byte lock = new Byte("0");
    //字符          数值
    //I             1
    //V             5
    //X             10
    //L             50
    //C             100
    //D             500
    //M             1000
    //I 可以放在 V (5) 和 X (10) 的左边，来表示 4 和 9。
    //X 可以放在 L (50) 和 C (100) 的左边，来表示 40 和 90。
    //C 可以放在 D (500) 和 M (1000) 的左边，来表示 400 和 900。
    public static void main(String[] args){
//        Timer timer = new Timer();
//        ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
        RomanToInt o = new RomanToInt();
        System.out.println(o.romanToInt("III"));
        System.out.println(o.romanToInt("IV"));
        System.out.println(o.romanToInt("IX"));
        System.out.println(o.romanToInt("LVIII"));
        System.out.println(o.romanToInt("MCMXCIV"));
        System.out.println(o.romanToInt("XLIX"));
        System.out.println(o.romanToInt("MDCXCV"));
    }

    public int romanToInt(String s) {
        int m = 0;
        int o = val(s.charAt(0));
        for (int i=1; i<s.length(); i++){
            int n = val(s.charAt(i));
            if (o>=n){
                m += o;
            } else {
                m -= o;
            }
            o = n;
        }
        m += o;
        return m;
    }
    private int val(char c){
        switch (c){
            case 'I': return 1;
            case 'V': return 5;
            case 'X': return 10;
            case 'L': return 50;
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
            default:return 0;
        }
    }

}
